iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0

介紹

當我們用前面提到過的第七章migration把DB建立以後,測試的資料從哪裡來呢? seed 的功用就是提供測試資料,把測試的data塞進測試DB裡面的。

使用方式

指令

一樣有貼心的指令可以建立seed,預設路徑為 database/seeders
指令: php artisan make:seeder ProductTableSeeder

檔案

產生的檔案裡面只會有一個預設的方法 run,其中用query builder 或是 eloquent model 加入資料都可以

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
    }
}

不過如果需要加入的測試資料比較多,一樣建議分成不同的檔案來管理比較好,這時候只要把剛剛DatabaseSeeder.php 裡面run method 寫的內容,改成call抽離出來的檔案就可以了

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $this->call([
        ProductTableSeeder::class,
        UserTableSeeder::class,
        StockTableSeeder::class,
    ]);
}

執行seed

需要用 dump-autoload 先重新產生composer 的 autoloader

composer dump-autoload

接著就可以用 Artisan command 的 db:seed 建立測試資料,然後就會執行上面提到,一開始預設就建立的 run 方法

php artisan db:seed

php artisan db:seed --class=ProductTableSeeder

結論: 這邊介紹的建立seed資料,可以幫助開發者在一開始都還沒有資料的時候,快速建立測試的資料,在下一章會提到如何配合模型工廠更快速的建立。

參考連結:


上一篇
Day21-[Laravel 資料夾目錄與內容] Artisan command 詳細介紹
下一篇
Day23-[DB 操作] Factory
系列文
30天快速上手Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言